﻿<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                    xmlns:Controls="clr-namespace:Scrabble.Controls">

    <SolidColorBrush x:Key="EnabledMask" Color="#FF000000"/>

    <LinearGradientBrush x:Key="DisabledMask" StartPoint="0, 0.5" EndPoint="1, .5">
        <LinearGradientBrush.GradientStops>
            <GradientStop Color="#00000000" Offset="0" />
            <GradientStop Color="#88000000" Offset=".4" />
            <GradientStop Color="#88000000" Offset=".6" />
            <GradientStop Color="#00000000" Offset="1" />
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>

    <Style x:Key="ToolButtonStyle" TargetType="{x:Type Button}">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="OpacityMask" Value="{StaticResource DisabledMask}" />
            </Trigger>
            <Trigger Property="IsEnabled" Value="True">
                <Setter Property="OpacityMask" Value="{StaticResource EnabledMask}" />
            </Trigger>
        </Style.Triggers>
    </Style>

    <SolidColorBrush x:Key="SearchTextBox_Background" Color="White" />
    <SolidColorBrush x:Key="SearchTextBox_Foreground" Color="Black" />
    <LinearGradientBrush x:Key="SearchTextBox_Border" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FFABADB3" Offset="0.05" />
        <GradientStop Color="#FFE2E3EA" Offset="0.07" />
        <GradientStop Color="#FFE3E9EF" Offset="1" />
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="SearchTextBox_BorderMouseOver" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FF5C97C1" Offset="0.05" />
        <GradientStop Color="#FFB9D7EB" Offset="0.07" />
        <GradientStop Color="#FFC7E2F1" Offset="1" />
    </LinearGradientBrush>
    <SolidColorBrush x:Key="SearchTextBox_SearchIconBorder" Color="White" />
    <SolidColorBrush x:Key="SearchTextBox_SearchIconBackground" Color="White" />
    <LinearGradientBrush x:Key="SearchTextBox_SearchIconBorder_MouseOver" StartPoint="0,0" EndPoint="0,1" >
        <GradientStop Color="#FFFFFFFF" Offset="0" />
        <GradientStop Color="#FFE5F4FC" Offset="1" />
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="SearchTextBox_SearchIconBackground_MouseOver" StartPoint="0,0" EndPoint="0,1" >
        <GradientStop Color="#FFE7F5FD" Offset="0" />
        <GradientStop Color="#FFD2EDFC" Offset="0.5" />
        <GradientStop Color="#FFB6E3FD" Offset="0.51" />
        <GradientStop Color="#FF9DD5F3" Offset="1" />
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="SearchTextBox_SearchIconBorder_MouseDown" StartPoint="0,0" EndPoint="0,1" >
        <GradientStop Color="#FFFFFFFF" Offset="0" />
        <GradientStop Color="#FFE5F4FC" Offset="1" />
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="SearchTextBox_SearchIconBackground_MouseDown" StartPoint="0,0" EndPoint="0,1" >
        <GradientStop Color="#FFE7F5FD" Offset="0" />
        <GradientStop Color="#FFD2EDFC" Offset="0.5" />
        <GradientStop Color="#FFB6E3FD" Offset="0.51" />
        <GradientStop Color="#FF9DD5F3" Offset="1" />
    </LinearGradientBrush>
    <SolidColorBrush x:Key="SearchTextBox_LabelTextColor" Color="Gray" />

    <Style x:Key="{x:Type Controls:SearchTextBox}" TargetType="{x:Type Controls:SearchTextBox}">
        <Setter Property="Background" Value="{StaticResource SearchTextBox_Background}" />
        <Setter Property="BorderBrush" Value="{StaticResource SearchTextBox_Border}" />
        <Setter Property="Foreground" Value="{StaticResource SearchTextBox_Foreground}" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
        <Setter Property="LabelText" Value="Search" />
        <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
        <Setter Property="LabelTextColor" Value="{StaticResource SearchTextBox_LabelTextColor}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Controls:SearchTextBox}">
                    <Border x:Name="Border"
                          Background="{TemplateBinding Background}"
                          BorderBrush="{TemplateBinding BorderBrush}"
                          BorderThickness="{TemplateBinding BorderThickness}">
                        <Grid x:Name="LayoutGrid">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="{Binding RelativeSource={RelativeSource TemplatedParent},
                                                  Path=ActualHeight}" />
                                <ColumnDefinition Width="16"  />
                            </Grid.ColumnDefinitions>
                            <ScrollViewer Margin="2" x:Name="PART_ContentHost" Grid.Column="0" />
                            <Label x:Name="LabelText"
                                Margin="2"
                                Grid.Column="0"
                                Foreground="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=LabelTextColor}"
                                Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=LabelText}"
                                Padding="2,0,0,0"
                                FontStyle="Italic" />
                            <Border x:Name="PART_SearchIconBorder"
                                Grid.Column="1"
                                BorderThickness="1"
                                VerticalAlignment="Stretch"
                                HorizontalAlignment="Stretch"
                                BorderBrush="{StaticResource SearchTextBox_SearchIconBorder}"
                                Background="{StaticResource SearchTextBox_SearchIconBackground}">
                                <Image x:Name="SearchIcon"
                                   Stretch="None"
                                   Width="16"
                                   Height="16" 
                                   HorizontalAlignment="Center"
                                   VerticalAlignment="Center"
                                   Source="pack://application:,,,/Scrabble;component/Assets/search.png"/>
                            </Border>
                            <Border x:Name="PART_SearchDropButtonBorder"
                                Grid.Column="2"
                                BorderThickness="1"
                                VerticalAlignment="Stretch"
                                HorizontalAlignment="Stretch"
                                BorderBrush="{StaticResource SearchTextBox_SearchIconBorder}"
                                Background="{StaticResource SearchTextBox_SearchIconBackground}">
                                <Path x:Name="DropDownArrow"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    Data="M 0 0 L 3 3 L 6 0 Z" >
                                    <Path.Fill>
                                        <SolidColorBrush Color="Black"/>
                                    </Path.Fill>
                                </Path>
                            </Border>
                            <!--<Popup x:Name="PART_DropdownPopup" 
                                   Width="{Binding ElementName=Border, Path=ActualWidth}"
                                   PlacementTarget="{Binding ElementName=Border}"
                                   Child="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=PopupContent}"
                                   PopupAnimation="Fade"/>-->
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderBrush" Value="{StaticResource SearchTextBox_BorderMouseOver}" />
                        </Trigger>
                        <Trigger Property="IsKeyboardFocusWithin" Value="True">
                            <Setter Property="BorderBrush" Value="{StaticResource SearchTextBox_BorderMouseOver}" />
                        </Trigger>
                        <Trigger Property="HasText" Value="True">
                            <Setter Property="Visibility" TargetName="LabelText" Value="Hidden" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" SourceName="PART_SearchDropButtonBorder"  Value="True">
                            <Setter Property="BorderBrush" TargetName="PART_SearchDropButtonBorder" Value="{StaticResource SearchTextBox_SearchIconBorder_MouseOver}" />
                            <Setter Property="Background" TargetName="PART_SearchDropButtonBorder" Value="{StaticResource SearchTextBox_SearchIconBackground_MouseOver}" />
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="HasText" Value="True" />
                                <Condition Property="SearchMode" Value="Instant" />
                            </MultiTrigger.Conditions>
                            <Setter Property="Source" TargetName="SearchIcon" Value="pack://application:,,,/Scrabble;component/Assets/clear.png" />
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" SourceName="PART_SearchIconBorder" Value="True" />
                                <Condition Property="HasText" Value="True" />
                            </MultiTrigger.Conditions>
                            <Setter Property="BorderBrush" TargetName="PART_SearchIconBorder" Value="{StaticResource SearchTextBox_SearchIconBorder_MouseOver}" />
                            <Setter Property="Background" TargetName="PART_SearchIconBorder" Value="{StaticResource SearchTextBox_SearchIconBackground_MouseOver}" />
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" SourceName="PART_SearchIconBorder" Value="True" />
                                <Condition Property="IsMouseLeftButtonDown" Value="True" />
                                <Condition Property="HasText" Value="True" />
                            </MultiTrigger.Conditions>
                            <Setter Property="Padding" TargetName="PART_SearchIconBorder" Value="2,0,0,0" />
                            <Setter Property="BorderBrush" TargetName="PART_SearchIconBorder" Value="{StaticResource SearchTextBox_SearchIconBorder_MouseOver}" />
                            <Setter Property="Background" TargetName="PART_SearchIconBorder" Value="{StaticResource SearchTextBox_SearchIconBackground_MouseOver}" />
                        </MultiTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</ResourceDictionary>